iT邦幫忙

0

【C#】Creational Patterns Singleton Mode

c#
  • 分享至 

  • xImage
  •  

單例是設計模式的其中一種~ 它讓程式在同一時間~ 只會有一個實例化的物件~

設計的思維很簡單~ 就是先用private~去保護類別~ 然後在寫一個生成類別的方法~


學習目標: Singleton的概念及實務

學習難度: ☆☆☆


using System;

namespace ConsoleApp1
{
    public class Singleton
    {

        public int value = 100;

        private Singleton() //保護Singleton
        {

        }

        private static Singleton singleton;

        public static Singleton GetInstance() //生成Singleton類別的方法~
        {
            if (singleton == null) //如果沒生成過,就生成
            {
                singleton = new Singleton();
            }
            return singleton; //反之回傳singleton
        }
    }

    class MainProgram
    {
        static void Main()
        {
            Singleton singleton1 = Singleton.GetInstance();

            Singleton singleton2 = Singleton.GetInstance();

            singleton2.value = 200;

            //注意~ singleton1會被singleton2.value所影響
        }
    }
}

參考資料:

https://stackoverflow.com/questions/2155688/what-is-a-singleton-in-c


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
jakeuj
iT邦新手 5 級 ‧ 2022-04-11 14:33:02
public sealed class Singleton
{
    private static readonly Lazy<Singleton> lazy = new Lazy<Singleton>();
    private Singleton() { }
    public static Singleton Instance => lazy.Value;
}

感覺這樣寫也不錯~ 謝謝您的回覆~

/images/emoticon/emoticon08.gif

我要留言

立即登入留言